import { axiosInstance } from 'src/boot/axios'
import CommonConfig from 'src/assets/js/config'

const baseUrl = CommonConfig.processUrl + '/v1'

// 工艺中心
/**
 * 获取产品列表
 * pageNum 页码（从 1 起计）
 * pageSize 每页条数
 * keyword 关键字
 * searchBy 搜索依据
 * productPropertyCode 产品属性 code
 * productStatusCode 产品状态 code
 * productTypeCode 产品类型 code
 * **/
export function getProducts (params) {
  const newUrl = baseUrl + '/products'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取工艺路线列表
 * productId 产品id
 * **/
export function getProcessRoute (params) {
  const newUrl = baseUrl + '/process_route_list'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取工艺路线列表
 * id 工艺路线id
 * **/
export function getProcessRouteSingle (id) {
  const newUrl = baseUrl + '/process_route'
  const params = {
    id
  }

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 根据产品id获取程序列表
 * productId 产品id
 * **/
export function getProcessList (productId) {
  const newUrl = baseUrl + '/process_program:batchGet'
  const params = {
    productId
  }

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 根据产品id获取刀单列表
 * productId 产品id
 * **/
export function getKnifesByproductId (productId) {
  const newUrl = baseUrl + `/processCutter/listByProduct/${productId}`

  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 添加工艺路线
 * id 工艺路线id
 * isUsing 必填，是否在用，填0
 * processRoute 工艺路线
 * processType 工艺类别
 * processVersion 版本
 * productId 产品id
 * **/
export function addProcessRoute (data) {
  const newUrl = baseUrl + '/process_route'

  return axiosInstance.post(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 编辑工艺路线
 * id 工艺路线id
 * isUsing 必填，是否在用，填0
 * processType 工艺类别
 * comments 备注
 * processVersion 版本
 * productId 产品id
 **/
export function editProcessRoute (data) {
  const newUrl = baseUrl + '/process_route'

  return axiosInstance.put(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 设置工艺路线是否在用
 * id 班制id
 * isUsing 是否在用，true or false
 **/
export function setCraftRouteUsing (data) {
  const newUrl = baseUrl + '/process_route_isusing'

  return axiosInstance.patch(newUrl, data).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 删除工艺路线
 * id 工艺路线id
 **/
export function delProcessRoute (id) {
  const newUrl = baseUrl + '/process_route'
  const params = {
    id
  }

  return axiosInstance.delete(newUrl, { params: params }).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 获取全部工序
 * **/
export function getWorkStep () {
  const newUrl = baseUrl + '/working_steps/simple'

  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 增加工序
 * processRouteId 工艺路线id
 * stepId 工序id
 * **/
export function addRouteStep (params) {
  const newUrl = baseUrl + '/process_route_step_add'

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 保存工序、工艺文件、程序文件
 * id
 * processRouteId 工艺路线id
 * stepId 工序id
 * processInfoReqVOs 工艺信息（一堆数据）
 * processFileReqVOs 工艺文件（一堆数据）
 * processProgramReqVOs 程序列表（一堆数据）
 * processKnifeReqVOs 工艺文件（一堆数据）
 * **/
export function saveProcessRoute (params) {
  const newUrl = baseUrl + '/process_route_save'

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 删除工序
 * id 工艺路线id
 * stepId 工序id
 * **/
export function delRouteStep (id) {
  const newUrl = baseUrl + '/process_route_step_del'
  const params = {
    id
  }

  return axiosInstance.delete(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 工序排序
 * id 工艺路线id
 * stepId 工序id
 * **/
export function sortRouteStep (params) {
  const newUrl = baseUrl + '/process_route_step_sort'

  return axiosInstance.put(newUrl, params).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取工序信息
 * processRouteStepId 工序id
 * **/
export function getStepInfo (processRouteStepId) {
  const newUrl = baseUrl + '/process_info'
  const params = {
    id: processRouteStepId
  }

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 保存工序信息
 * id 工序编号id
 * processRouteStepId 工序id
 * processCount 循环加工个数
 * pricingUnit 计价方式
 * workingHour 标准工时
 * unitPrice 工时单价/单件记价（元）
 * isKeyProcess 关键工序
 * isOutsourcing 委外工序
 * isQualityProcess 质检工序
 * processTime 预计加工工时
 * pickPlaceTime 循环取放时间
 * changeoverTime 预计换线时间
 * **/
export function editStepInfo (params) {
  const newUrl = baseUrl + '/process_info'

  return axiosInstance.put(newUrl, params).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取工艺文件列表
 * processRouteStepId 工序id
 * **/
export function getStepFileList (processInfoId) {
  const newUrl = baseUrl + '/process_file_list'
  const params = {
    processInfoId
  }

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

// /**
//  * 添加工艺文件
//  * reqvo 工艺文件
//  * **/
// export function addProcessFileUpload (files) {
//   const newUrl = 'file/v1/cloud_processFile_upload'
//   const formData = new FormData()
//   formData.append('file', files)
//
//   return axiosInstance.post(newUrl, formData).then((res) => {
//     return Promise.resolve((res))
//   })
// }
/**
 * 添加工艺文件
 * name 文件名称
 * processInfoId 公益信息id
 * url 文件路径
 * **/
export function addProcessFile (params) {
  const newUrl = baseUrl + '/process_file'

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 删除工艺文件
 * reqvo 工艺文件
 * **/
export function delProcessFile (id) {
  const newUrl = baseUrl + '/process_file_delete'
  const params = {
    id
  }

  return axiosInstance.delete(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 添加程序文件
 * file 程序文件
 * type 上传模式
 * **/
export function addStepProgramUpload (params) {
  const newUrl = 'file/v1/minio/cloud_program_upload'
  // const formData = new FormData()
  // formData.append('file', files)

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve((res))
  })
}
/**
 * 添加程序文件
 * processInfoId 公艺信息id
 * url 文件路径
 * **/
export function addStepProgram (params) {
  const newUrl = baseUrl + '/process_Program'

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve((res))
  })
}

/**
 * 获取加工程序列表
 * processRouteStepId 工序id
 * **/
export function getStepProgramList (processRouteStepId) {
  const newUrl = baseUrl + '/process_Program_list'
  const params = {
    processInfoId: processRouteStepId
  }

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 删除加工程序
 * id 程序id
 * **/
export function delStepProgramItem (id) {
  const newUrl = baseUrl + '/process_Program'
  const params = {
    id
  }

  return axiosInstance.delete(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取刀单列表
 * processRouteStepId 工序id
 * **/
export function getKnifeList (processRouteStepId) {
  const newUrl = baseUrl + '/process_knife_list'
  const params = {
    processInfoId: processRouteStepId
  }

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 删除刀单
 * id 工艺文件
 * **/
export function delKnifeItem (id) {
  const newUrl = baseUrl + '/process_knife'
  const params = {
    id
  }

  return axiosInstance.patch(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}
/**
 * 校验工艺路线是否可操作
 */
export function getCheckToEdit (id) {
  const newUrl = baseUrl + `/process_routes/${id}:editCheck`
  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 校验工艺路线是否可删除
 */
export function getDeleteCheck (id) {
  const newUrl = baseUrl + `/process_routes/${id}:deleteCheck`
  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 工艺路线版本号重复校验
 * /v1/products/{productId}/process_routes/version:repeatCheck
 */
export function getRepeatCheck ({ productId, version }) {
  const params = {
    version
  }
  const newUrl = baseUrl + `/products/${productId}/process_routes/version:repeatCheck`
  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}
